package com.ryan.mdp.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import javax.jms.Message;

/**
 * 
 * @author botao.liao
 * 
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MdpMethod {

    /**
     * 客户端同步调用缺省超时时间（毫秒），2分钟
     */
    public static final long DEFAULT_TIMEOUT = 2 * 60 * 1000;

    /**
     * 在开启客户端缓存的前提下，缺省的缓存失效时间
     */
    public static final long DEFAULT_CACHE_TTL = 5 * 60 * 1000;

    /**
     * 调用超时时间,单位：毫秒
     * 
     * @return
     */
    long timeout() default DEFAULT_TIMEOUT;

    /**
     * 调用优先级
     * 
     * @return
     */
    int priority() default Message.DEFAULT_PRIORITY;

    /**
     * time to live 消息存活时间,单位：毫秒
     * 
     * @return
     */
    long ttl() default 0;

    /**
     * 同步方法是否cache
     * 
     * @return
     */
    boolean cache() default false;

    /**
     * cache失效时间，单位：毫秒
     * 
     * @return
     */
    long cacheTtl() default DEFAULT_CACHE_TTL;
}
